When the popover is dismissed, we return the focus to
where it came from. However, by using gtk_widget_grab_focus,
we were messing up the selection if that widget happens to
be an entry. Special-case GtkEntry and use
gtk_entry_grab_focus_without_selecting to avoid this issue.
/* Let prev_focus_widget regain focus */
if (priv->prev_focus_widget &&
gtk_widget_is_drawable (priv->prev_focus_widget))
- gtk_widget_grab_focus (priv->prev_focus_widget);
+ {
+ if (GTK_IS_ENTRY (priv->prev_focus_widget))
+ gtk_entry_grab_focus_without_selecting (GTK_ENTRY (priv->prev_focus_widget));
+ else
+ gtk_widget_grab_focus (priv->prev_focus_widget);
+ }
else if (priv->window)
gtk_widget_grab_focus (GTK_WIDGET (priv->window));